home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / FlavorRegistry.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  4.6 KB  |  127 lines

  1. package com.extensibility.xml;
  2.  
  3. import com.extensibility.xml.xsdl19991217.XSDLFlavor;
  4. import java.io.File;
  5. import java.util.Vector;
  6.  
  7. public class FlavorRegistry {
  8.    static FlavorRegistry singleton;
  9.    Vector factories = new Vector();
  10.    Vector names = new Vector();
  11.    Vector bases = new Vector();
  12.  
  13.    public FlavorRegistry() {
  14.       this.add(DTDFlavor.NAME, new 1((FlavorRegistry)null));
  15.       this.add(XDRFlavor.NAME, new 2((FlavorRegistry)null));
  16.       this.add(XDRFlavor.NAME, BIZFlavor.NAME, new 3((FlavorRegistry)null));
  17.       this.add(SOX2Flavor.NAME, new 4((FlavorRegistry)null));
  18.       this.add("xsd", new 5((FlavorRegistry)null));
  19.       this.add(XDRFlavor.NAME, OSCFlavor.NAME, new 6((FlavorRegistry)null));
  20.    }
  21.  
  22.    public String getNamedBaseFlavor(String var1) {
  23.       int var2 = this.names.indexOf(var1);
  24.       return var2 >= 0 ? (String)this.bases.elementAt(var2) : null;
  25.    }
  26.  
  27.    public boolean isCompatible(String var1, String var2) {
  28.       return this.getNamedBaseFlavor(var1).equals(this.getNamedBaseFlavor(var2));
  29.    }
  30.  
  31.    public void add(String var1, String var2, FlavorFactoryIntf var3) {
  32.       int var4 = this.names.indexOf(var2);
  33.       if (var4 >= 0) {
  34.          this.bases.setElementAt(var1, var4);
  35.          this.names.setElementAt(var2, var4);
  36.          this.factories.setElementAt(var3, var4);
  37.       } else {
  38.          this.bases.addElement(var1);
  39.          this.names.addElement(var2);
  40.          this.factories.addElement(var3);
  41.       }
  42.  
  43.    }
  44.  
  45.    public void add(String var1, FlavorFactoryIntf var2) {
  46.       this.add(var1, var1, var2);
  47.    }
  48.  
  49.    public void remove(String var1) {
  50.       int var2 = this.names.indexOf(var1);
  51.       if (var2 >= 0) {
  52.          this.bases.removeElementAt(var2);
  53.          this.names.removeElementAt(var2);
  54.          this.factories.removeElementAt(var2);
  55.       }
  56.  
  57.    }
  58.  
  59.    public static FlavorRegistry getDefaultRegistry() {
  60.       if (singleton == null) {
  61.          singleton = new FlavorRegistry();
  62.       }
  63.  
  64.       return singleton;
  65.    }
  66.  
  67.    public String[] getFlavorNames() {
  68.       String[] var1 = new String[this.names.size()];
  69.  
  70.       for(int var2 = 0; var2 < this.factories.size(); ++var2) {
  71.          var1[var2] = this.names.elementAt(var2).toString();
  72.       }
  73.  
  74.       return var1;
  75.    }
  76.  
  77.    public FlavorFactoryIntf getNamedFactory(String var1) {
  78.       int var2 = this.names.indexOf(var1);
  79.       return var2 >= 0 ? (FlavorFactoryIntf)this.factories.elementAt(var2) : null;
  80.    }
  81.  
  82.    public boolean flavorExists(String var1) {
  83.       if (var1.equals("xsd.1999.12.17")) {
  84.          return true;
  85.       } else if (var1.equals("xsd.1999.05.06")) {
  86.          return true;
  87.       } else {
  88.          return this.names.indexOf(var1) >= 0;
  89.       }
  90.    }
  91.  
  92.    public SchemaFlavorIntf createFlavor(SchemaIntf var1, String var2) {
  93.       FlavorFactoryIntf var3 = this.getNamedFactory(var2);
  94.       if (var3 == null) {
  95.          if (var2.equals("xsd.1999.12.17")) {
  96.             return new XSDLFlavor(var1);
  97.          } else {
  98.             return var2.equals("xsd.1999.05.06") ? new com.extensibility.xml.xsdl19990506.XSDLFlavor(var1) : null;
  99.          }
  100.       } else {
  101.          return var3.createFlavor(var1);
  102.       }
  103.    }
  104.  
  105.    private FlavorFactoryIntf createFlavorFactory(String var1, URI var2) {
  106.       return new 7(var1, var2, (FlavorRegistry)null);
  107.    }
  108.  
  109.    public void addFlavors(File var1) {
  110.       String[] var2 = var1.list();
  111.       if (var2 != null) {
  112.          for(int var3 = 0; var3 < var2.length; ++var3) {
  113.             String var4 = var2[var3];
  114.             int var5 = var4.lastIndexOf(46);
  115.             String var6 = var5 == -1 ? var4 : var4.substring(0, var5);
  116.             String var7 = var5 == -1 ? "" : var4.substring(var5 + 1);
  117.             URI var8 = new URI(new File(var1, var4));
  118.             if (var7.equals("xams") || MetaSchemaFlavor.isValid(var6, var8)) {
  119.                FlavorFactoryIntf var9 = this.createFlavorFactory(var6, var8);
  120.                this.add(SchemaIntf.XDR_FLAVOR_NAME, var6, var9);
  121.             }
  122.          }
  123.  
  124.       }
  125.    }
  126. }
  127.